package zhongbo.javaweb.instagram.config;

import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
import zhongbo.javaweb.instagram.web.util.JunitUtil;

/**
 * 说明：WebSocket 原生配置
 * <p>
 * ConditionalOnWebApplication 当Spring在Web环境下才使Configuration配置生效
 *
 * @author 钟波notebook
 * @since 2020年02月03日 星期一 00:53:49
 */
@ConditionalOnWebApplication
@Configuration
public class WebSocketConfig {

    /**
     * 这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint
     * <p>
     * 0403 添加自动识别单元测试, 单元测试时候不使用ServerEndpointExporter,避免测试启动失败
     *
     * @return serverEndpointExporter
     */
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        /*
        ServerEndpointExporter 无法在Junit中使用, 不然无法运行单元测试
         */
        if (JunitUtil.isRunningInTest()) {
            return null;
        }
        return new ServerEndpointExporter();
    }

}
